import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
import { NgxSmoothDnDModule } from 'ngx-smooth-dnd';
import { GridsterModule } from 'angular-gridster2';

import {
  MdcTopAppBarModule,
  MdcIconModule,
  MdcElevationModule,
  MdcDrawerModule,
  MdcIconButtonModule,
  MdcButtonModule,
  MdcMenuModule,
  MdcListModule,
  MdcCardModule,
  MdcFormFieldModule,
  MdcTextFieldModule,
  MdcSelectModule,
  MdcCheckboxModule,
  MdcRadioModule,
} from '@angular-mdc/web';

import { AdminRoutingModule } from './admin-routing.module';
import { MainComponent } from './main/main.component';
import { BuilderViewerComponent } from './builder-viewer/builder-viewer.component';
import { RendererViewerComponent } from './renderer-viewer/renderer-viewer.component';
import { DashboardMainComponent } from './dashboard/dashboard-main/dashboard-main.component';
import { BuilderMainComponent } from './builder/builder-main/builder-main.component';
import { HeaderComponent } from './dashboard/controls/header/header.component';
import { HrizontalRuleComponent } from './dashboard/controls/hrizontal-rule/hrizontal-rule.component';
import { TextComponent } from './dashboard/controls/text/text.component';
import { TextAreaComponent } from './dashboard/controls/text-area/text-area.component';
import { RadioComponent } from './dashboard/controls/radio/radio.component';
import { CheckboxComponent } from './dashboard/controls/checkbox/checkbox.component';
import { SwitchComponent } from './dashboard/controls/switch/switch.component';
import { DatetimeComponent } from './dashboard/controls/datetime/datetime.component';
import { CheckboxPanelComponent } from './builder/builder-config-panels/checkbox-panel/checkbox-panel.component';
import { DatetimePanelComponent } from './builder/builder-config-panels/datetime-panel/datetime-panel.component';
import { HeaderPanelComponent } from './builder/builder-config-panels/header-panel/header-panel.component';
import { RadioPanelComponent } from './builder/builder-config-panels/radio-panel/radio-panel.component';
import { SwitchPanelComponent } from './builder/builder-config-panels/switch-panel/switch-panel.component';
import { TextPanelComponent } from './builder/builder-config-panels/text-panel/text-panel.component';
import { TextAreaPanelComponent } from './builder/builder-config-panels/text-area-panel/text-area-panel.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { OptionsFieldComponent } from './builder/builder-config-panels/options-field/options-field.component';
import { RendererMainComponent } from './renderer/renderer-main/renderer-main.component';

@NgModule({
  declarations: [
    MainComponent,
    BuilderViewerComponent,
    RendererViewerComponent,
    DashboardMainComponent,
    BuilderMainComponent,
    HeaderComponent,
    HrizontalRuleComponent,
    TextComponent,
    TextAreaComponent,
    RadioComponent,
    CheckboxComponent,
    SwitchComponent,
    DatetimeComponent,
    CheckboxPanelComponent,
    DatetimePanelComponent,
    HeaderPanelComponent,
    RadioPanelComponent,
    SwitchPanelComponent,
    TextPanelComponent,
    TextAreaPanelComponent,
    OptionsFieldComponent,
    RendererMainComponent,
  ],
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    PerfectScrollbarModule,
    NgxSmoothDnDModule,
    GridsterModule,
    MdcTopAppBarModule,
    MdcIconModule,
    MdcElevationModule,
    MdcDrawerModule,
    MdcIconButtonModule,
    MdcButtonModule,
    MdcMenuModule,
    MdcListModule,
    MdcCardModule,
    MdcFormFieldModule,
    MdcTextFieldModule,
    MdcSelectModule,
    MdcCheckboxModule,
    MdcRadioModule,
    AdminRoutingModule,
  ],
  entryComponents: [
    HeaderComponent,
    HeaderPanelComponent,
    HrizontalRuleComponent,
    TextComponent,
    TextPanelComponent,
    TextAreaComponent,
    TextAreaPanelComponent,
    RadioComponent,
    RadioPanelComponent,
    CheckboxComponent,
    CheckboxPanelComponent,
    SwitchComponent,
    SwitchPanelComponent,
    DatetimeComponent,
    DatetimePanelComponent,
  ],
})
export class AdminModule { }
